<!doctype html>


<html>
<head>
  <link rel="shortcut icon" href="static/images/favicon.ico" type="image/x-icon">
  <title>Index (Closure Library API Documentation - JavaScript)</title>
  <link rel="stylesheet" href="static/css/base.css">
  <link rel="stylesheet" href="static/css/doc.css">
  <link rel="stylesheet" href="static/css/sidetree.css">
  <link rel="stylesheet" href="static/css/prettify.css">

  <script>
     var _staticFilePath = "static/";
     var _typeTreeName = "goog";
     var _fileTreeName = "Source";
  </script>

  <script src="static/js/doc.js">
  </script>

  <script type="text/javascript" src="//www.google.com/jsapi"></script>
  <script type="text/javascript">
     google.load("visualization", "1", {packages:["orgchart"]});
     var _loadingVisualizations = true;
  </script>

  <meta charset="utf8">
</head>

<body onload="grokdoc.onLoad();">

<div id="header">
  <div class="g-section g-tpl-50-50 g-split">
    <div class="g-unit g-first">
      <a id="logo" href="index.html">Closure Library API Documentation</a>
    </div>

    <div class="g-unit">
      <div class="g-c">
        <strong>Go to class or file:</strong>
        <input type="text" id="ac">
      </div>
    </div>
  </div>
</div>





<div class="colmask rightmenu">
<div class="colleft">
    <div class="col1">
      <!-- Column 1 start -->

<div id="title">
        <span class="fn">db.Index</span>
        <span>Extends</span>
        <span class="fn-name">
          
        </span>
</div>

<div class="g-section g-tpl-75-25">
  <div class="g-unit g-first" id="description">
    Creates an IDBIndex wrapper object. Indexes are associated with object
stores and provide methods for looking up objects based on their non-key
properties. Should not be created directly, access through the object store
it belongs to.

  </div>


        <div class="g-unit" id="useful-links">
          <div class="title">Useful links</div>
          <ol>
            <li><a href="goog.db.ObjectStore#getIndex">Also See:</a></li>
            <li><a href="local_closure_goog_db_index.js.source.html"><span class='source-code-link'>Source Code</span></a></li>
            <li><a href="http://code.google.com/p/closure-library/source/browse/local/closure/goog/db/index.js">Git</a></li>
          </ol>
        </div>
</div>






<h2 class="g-first">Inheritance</h2>
<div class='gviz-org-chart-container goog-inline-block'>
<table class='gviz-org-chart' style='display:none'>
  <tr><td>goog.db.Index</td><td></td></tr>
</table>
</div>
<div class='gviz-org-chart-container goog-inline-block'>
<table class='gviz-org-chart' style='display:none'>
</table>
</div>




  <h2>Constructor</h2>
      <div class="fn-constructor">
    goog.db.Index(<span><span class="arg">index</span></span>)
  </div>

   <h3>Parameters</h3>






<table class="horiz-rule">
     
   <tr class="even">
     <td>
        <span class="entryName">index</span>
        : <span>!</span><span class="type">IDBIndex</span>
        <div class="entryOverview">Underlying IDBIndex object.</div>
     </td>
   </tr>
  </table>


<h2>Instance Methods</h2>


  <div class="legend">
        <span class="key publickey"></span><span>Public</span>
        <span class="key protectedkey"></span><span>Protected</span>
        <span class="key privatekey"></span><span>Private</span>
  </div>







<div>
       <div class="desc">
         Defined in
         <span class="fn-name">
            <a href="class_goog_db_Index.html">
              goog.db.Index
            </a>
         </span>
       </div>






<div class="section">
  <table class="horiz-rule">


     <tr class="even entry public">
       <td class="access"></td>






  <td>
    <a name="goog.db.Index.prototype.get"></a>


     <div class="arg">
       <img align="left" src="static/images/blank.gif">

        <span class="entryName">get<span class="args">(<span class="arg">key</span>)</span>
        </span>
        &#8658; <span>!</span><span class="type"><a href="class_goog_async_Deferred.html">goog.async.Deferred</a></span>
      </div>


     <div class="entryOverview">
       Fetches a single object from the object store. Even if there are multiple
objects that match the given key, this method will get only one of them.


     </div>


    <! -- Method details -->
    <div class="entryDetails">

      <div class="detailsSection">
        <b>Arguments: </b>






<table class="horiz-rule">
     
   <tr class="even">
     <td>
        <span class="entryName">key</span>
        : <span class="type">IDBKeyType</span>
        <div class="entryOverview">Key to look up in the index.</div>
     </td>
   </tr>
  </table>
      </div>
   
      <div class="detailsSection">
        <b>Returns:</b>&nbsp;<span>!</span><span class="type"><a href="class_goog_async_Deferred.html">goog.async.Deferred</a></span>&nbsp;
            The deferred object for the given record.
      </div>
  
    </div>
   
  </td>


  <td class="view-code">
     <a href="local_closure_goog_db_index.js.source.html#line114">code &raquo;</a>
  </td>
     </tr>


     <tr class="odd entry public">
       <td class="access"></td>






  <td>
    <a name="goog.db.Index.prototype.getAll"></a>


     <div class="arg">
       <img align="left" src="static/images/blank.gif">

        <span class="entryName">getAll<span class="args">(<span class="arg">opt_key</span>)</span>
        </span>
        &#8658; <span>!</span><span class="type"><a href="class_goog_async_Deferred.html">goog.async.Deferred</a></span>
      </div>


     <div class="entryOverview">
       Gets all indexed objects. If the key is provided, gets all indexed objects
that match the key instead.


     </div>


    <! -- Method details -->
    <div class="entryDetails">

      <div class="detailsSection">
        <b>Arguments: </b>






<table class="horiz-rule">
     
   <tr class="even">
     <td>
        <span class="entryName">opt_key</span>
        : <span class="type">IDBKeyType=</span>
        <div class="entryOverview">Key to look up in the index.</div>
     </td>
   </tr>
  </table>
      </div>
   
      <div class="detailsSection">
        <b>Returns:</b>&nbsp;<span>!</span><span class="type"><a href="class_goog_async_Deferred.html">goog.async.Deferred</a></span>&nbsp;
            A deferred array of objects that match the
    key.
      </div>
  
    </div>
   
  </td>


  <td class="view-code">
     <a href="local_closure_goog_db_index.js.source.html#line189">code &raquo;</a>
  </td>
     </tr>


     <tr class="even entry public">
       <td class="access"></td>






  <td>
    <a name="goog.db.Index.prototype.getAllKeys"></a>


     <div class="arg">
       <img align="left" src="static/images/blank.gif">

        <span class="entryName">getAllKeys<span class="args">(<span class="arg">opt_key</span>)</span>
        </span>
        &#8658; <span>!</span><span class="type"><a href="class_goog_async_Deferred.html">goog.async.Deferred</a></span>
      </div>


     <div class="entryOverview">
       Gets the keys to look up all the indexed objects. If the key is provided,
gets all records for objects that match the key instead.


     </div>


    <! -- Method details -->
    <div class="entryDetails">

      <div class="detailsSection">
        <b>Arguments: </b>






<table class="horiz-rule">
     
   <tr class="even">
     <td>
        <span class="entryName">opt_key</span>
        : <span class="type">IDBKeyType=</span>
        <div class="entryOverview">Key to look up in the index.</div>
     </td>
   </tr>
  </table>
      </div>
   
      <div class="detailsSection">
        <b>Returns:</b>&nbsp;<span>!</span><span class="type"><a href="class_goog_async_Deferred.html">goog.async.Deferred</a></span>&nbsp;
            A deferred array of keys for objects that
    match the key.
      </div>
  
    </div>
   
  </td>


  <td class="view-code">
     <a href="local_closure_goog_db_index.js.source.html#line205">code &raquo;</a>
  </td>
     </tr>


     <tr class="odd entry private">
       <td class="access"></td>






  <td>
    <a name="goog.db.Index.prototype.getAll_"></a>


     <div class="arg">
       <img align="left" src="static/images/blank.gif">

        <span class="entryName">getAll_<span class="args">(<span class="arg">fn</span>,&nbsp;<span class="arg">msg</span>,&nbsp;<span class="arg">opt_key</span>)</span>
        </span>
        &#8658; <span>!</span><span class="type"><a href="class_goog_async_Deferred.html">goog.async.Deferred</a></span>
      </div>


     <div class="entryOverview">
       Helper function for getAll and getAllKeys.


     </div>


    <! -- Method details -->
    <div class="entryDetails">

      <div class="detailsSection">
        <b>Arguments: </b>






<table class="horiz-rule">
     
   <tr class="even">
     <td>
        <span class="entryName">fn</span>
        : <span class="type"><a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String">string</a></span>
        <div class="entryOverview">Function name to call on the index to get the request.</div>
     </td>
   </tr>
     
   <tr class="odd">
     <td>
        <span class="entryName">msg</span>
        : <span class="type"><a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String">string</a></span>
        <div class="entryOverview">Message to give to the error.</div>
     </td>
   </tr>
     
   <tr class="even">
     <td>
        <span class="entryName">opt_key</span>
        : <span class="type">IDBKeyType=</span>
        <div class="entryOverview">Key to look up in the index.</div>
     </td>
   </tr>
  </table>
      </div>
   
      <div class="detailsSection">
        <b>Returns:</b>&nbsp;<span>!</span><span class="type"><a href="class_goog_async_Deferred.html">goog.async.Deferred</a></span>&nbsp;
            The resulting deferred array of objects.
      </div>
  
    </div>
   
  </td>


  <td class="view-code">
     <a href="local_closure_goog_db_index.js.source.html#line142">code &raquo;</a>
  </td>
     </tr>


     <tr class="even entry public">
       <td class="access"></td>






  <td>
    <a name="goog.db.Index.prototype.getKey"></a>


     <div class="arg">
       <img align="left" src="static/images/blank.gif">

        <span class="entryName">getKey<span class="args">(<span class="arg">key</span>)</span>
        </span>
        &#8658; <span>!</span><span class="type"><a href="class_goog_async_Deferred.html">goog.async.Deferred</a></span>
      </div>


     <div class="entryOverview">
       Looks up a single object from the object store and gives back the key that
it's listed under in the object store. Even if there are multiple records
that match the given key, this method returns the first.


     </div>


    <! -- Method details -->
    <div class="entryDetails">

      <div class="detailsSection">
        <b>Arguments: </b>






<table class="horiz-rule">
     
   <tr class="even">
     <td>
        <span class="entryName">key</span>
        : <span class="type">IDBKeyType</span>
        <div class="entryOverview">Key to look up in the index.</div>
     </td>
   </tr>
  </table>
      </div>
   
      <div class="detailsSection">
        <b>Returns:</b>&nbsp;<span>!</span><span class="type"><a href="class_goog_async_Deferred.html">goog.async.Deferred</a></span>&nbsp;
            The deferred key for the record that matches
    the key.
      </div>
  
    </div>
   
  </td>


  <td class="view-code">
     <a href="local_closure_goog_db_index.js.source.html#line128">code &raquo;</a>
  </td>
     </tr>


     <tr class="odd entry public">
       <td class="access"></td>






  <td>
    <a name="goog.db.Index.prototype.getKeyPath"></a>


     <div class="arg">
       <img align="left" src="static/images/blank.gif">

        <span class="entryName">getKeyPath<span class="args">()</span>
        </span>
        &#8658; <span class="type"><a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String">string</a></span>
      </div>


     <div class="entryOverview">
       <span class='nodesc'>No description.</span>
     </div>


    <! -- Method details -->
    <div class="entryDetails">

   
      <div class="detailsSection">
        <b>Returns:</b>&nbsp;<span class="type"><a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String">string</a></span>&nbsp;
            Key path of the index.
      </div>
  
    </div>
   
  </td>


  <td class="view-code">
     <a href="local_closure_goog_db_index.js.source.html#line63">code &raquo;</a>
  </td>
     </tr>


     <tr class="even entry public">
       <td class="access"></td>






  <td>
    <a name="goog.db.Index.prototype.getName"></a>


     <div class="arg">
       <img align="left" src="static/images/blank.gif">

        <span class="entryName">getName<span class="args">()</span>
        </span>
        &#8658; <span class="type"><a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String">string</a></span>
      </div>


     <div class="entryOverview">
       <span class='nodesc'>No description.</span>
     </div>


    <! -- Method details -->
    <div class="entryDetails">

   
      <div class="detailsSection">
        <b>Returns:</b>&nbsp;<span class="type"><a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String">string</a></span>&nbsp;
            Name of the index.
      </div>
  
    </div>
   
  </td>


  <td class="view-code">
     <a href="local_closure_goog_db_index.js.source.html#line55">code &raquo;</a>
  </td>
     </tr>


     <tr class="odd entry private">
       <td class="access"></td>






  <td>
    <a name="goog.db.Index.prototype.get_"></a>


     <div class="arg">
       <img align="left" src="static/images/blank.gif">

        <span class="entryName">get_<span class="args">(<span class="arg">fn</span>,&nbsp;<span class="arg">msg</span>,&nbsp;<span class="arg">key</span>)</span>
        </span>
        &#8658; <span>!</span><span class="type"><a href="class_goog_async_Deferred.html">goog.async.Deferred</a></span>
      </div>


     <div class="entryOverview">
       Helper function for get and getKey.


     </div>


    <! -- Method details -->
    <div class="entryDetails">

      <div class="detailsSection">
        <b>Arguments: </b>






<table class="horiz-rule">
     
   <tr class="even">
     <td>
        <span class="entryName">fn</span>
        : <span class="type"><a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String">string</a></span>
        <div class="entryOverview">Function name to call on the index to get the request.</div>
     </td>
   </tr>
     
   <tr class="odd">
     <td>
        <span class="entryName">msg</span>
        : <span class="type"><a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String">string</a></span>
        <div class="entryOverview">Message to give to the error.</div>
     </td>
   </tr>
     
   <tr class="even">
     <td>
        <span class="entryName">key</span>
        : <span class="type">IDBKeyType</span>
        <div class="entryOverview">The key to look up in the index.</div>
     </td>
   </tr>
  </table>
      </div>
   
      <div class="detailsSection">
        <b>Returns:</b>&nbsp;<span>!</span><span class="type"><a href="class_goog_async_Deferred.html">goog.async.Deferred</a></span>&nbsp;
            The resulting deferred object.
      </div>
  
    </div>
   
  </td>


  <td class="view-code">
     <a href="local_closure_goog_db_index.js.source.html#line86">code &raquo;</a>
  </td>
     </tr>


     <tr class="even entry public">
       <td class="access"></td>






  <td>
    <a name="goog.db.Index.prototype.isUnique"></a>


     <div class="arg">
       <img align="left" src="static/images/blank.gif">

        <span class="entryName">isUnique<span class="args">()</span>
        </span>
        &#8658; <span class="type"><a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Boolean">boolean</a></span>
      </div>


     <div class="entryOverview">
       <span class='nodesc'>No description.</span>
     </div>


    <! -- Method details -->
    <div class="entryDetails">

   
      <div class="detailsSection">
        <b>Returns:</b>&nbsp;<span class="type"><a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Boolean">boolean</a></span>&nbsp;
            True if the index enforces that there is only one object
    for each unique value it indexes on.
      </div>
  
    </div>
   
  </td>


  <td class="view-code">
     <a href="local_closure_goog_db_index.js.source.html#line72">code &raquo;</a>
  </td>
     </tr>


     <tr class="odd entry public">
       <td class="access"></td>






  <td>
    <a name="goog.db.Index.prototype.openCursor"></a>


     <div class="arg">
       <img align="left" src="static/images/blank.gif">

        <span class="entryName">openCursor<span class="args">(<span class="arg">opt_range</span>,&nbsp;<span class="arg">opt_direction</span>)</span>
        </span>
        &#8658; <span>!</span><span class="type"><a href="class_goog_db_Cursor.html">goog.db.Cursor</a></span>
      </div>


     <div class="entryOverview">
       Opens a cursor over the specified key range. Returns a cursor object which is
able to iterate over the given range.

Example usage:

<code>
 var cursor = index.openCursor(goog.db.Range.bound('a', 'c'));

 var key = goog.events.listen(
     cursor, goog.db.Cursor.EventType.NEW_DATA,
     function() {
       // Do something with data.
       cursor.next();
     });

 goog.events.listenOnce(
     cursor, goog.db.Cursor.EventType.COMPLETE,
     function() {
       // Clean up listener, and perform a finishing operation on the data.
       goog.events.unlistenByKey(key);
     });
</code>
     </div>


    <! -- Method details -->
    <div class="entryDetails">

      <div class="detailsSection">
        <b>Arguments: </b>






<table class="horiz-rule">
     
   <tr class="even">
     <td>
        <span class="entryName">opt_range</span>
        : <span>!</span><span class="type">goog.db.KeyRange=</span>
        <div class="entryOverview">The key range. If undefined iterates
    over the whole object store.</div>
     </td>
   </tr>
     
   <tr class="odd">
     <td>
        <span class="entryName">opt_direction</span>
        : <span>!</span><span class="type">goog.db.Cursor.Direction=</span>
        <div class="entryOverview">The direction. If undefined
    moves in a forward direction with duplicates.</div>
     </td>
   </tr>
  </table>
      </div>
   
      <div class="detailsSection">
        <b>Returns:</b>&nbsp;<span>!</span><span class="type"><a href="class_goog_db_Cursor.html">goog.db.Cursor</a></span>&nbsp;
            The cursor.
      </div>
  
    </div>
   
  </td>


  <td class="view-code">
     <a href="local_closure_goog_db_index.js.source.html#line244">code &raquo;</a>
  </td>
     </tr>


  </table>
</div>
</div>




<h2>Instance Properties</h2>







<div>
       <div class="desc">
         Defined in
         <span class="fn-name">
            <a href="class_goog_db_Index.html">
              goog.db.Index
            </a>
         </span>
       </div>






<div class="section">
  <table class="horiz-rule">


     <tr class="even entry private">
       <td class="access"></td>





  <a name="goog.db.Index.prototype.index_"></a>

  <td>


     <div class="arg">
        <img align="left" src="static/images/blank.gif">

        <span class="entryName">index_</span>
        : 
     </div>


     <div class="entryOverview">
       Underlying IndexedDB index object.


     </div>

  </td>


  <td class="view-code">
     <a href="local_closure_goog_db_index.js.source.html#line48">Code &raquo;</a>
  </td>
     </tr>


  </table>
</div>
</div>










<div class="section">
  <table class="horiz-rule">


  </table>
</div>









<div class="section">
  <table class="horiz-rule">


  </table>
</div>









<div class="section">
  <table class="horiz-rule">


  </table>
</div>
      <!-- Column 1 end -->
    </div>

        <div class="col2">
          <!-- Column 2 start -->
          <div class="col2-c">
            <h2 id="ref-head">Package db</h2>
            <div id="localView"></div>
          </div>

          <div class="col2-c">
            <h2 id="ref-head">Package Reference</h2>
            <div id="sideTypeIndex" rootPath="" current="db.Index"></div>
          </div>
          <!-- Column 2 end -->
        </div>
</div>
</div>

</body>
</html>
